package com.jvm.memory.demo;

import org.junit.Test;

import java.util.concurrent.TimeUnit;

/**
 * HeapGCTest
 *
 * @author Lizhong
 * @date 2019/2/21
 */
public class HeapGCTest {
    private int _1M = 1024 * 1024;

    public static void main(String[] args) {

    }

    /**
     * -VM启动参数：jadk9采用G1收集器改为jdk1.7或1.8 -XX:+UseParallelGC -XX:+UseParallelOldGC
     * -XX:+PrintGCDetails -Xms20M -Xmx20M -Xmn10M -XX:SurvivorRatio=8 -verbose:gc
     *
     *
     */
    @Test
    public void test01() throws InterruptedException {
        byte[] bytes = new byte[2 * _1M];
        byte[] bytes1 = new byte[2 * _1M];
        byte[] bytes2 = new byte[2 * _1M];
        // 发生gc
        byte[] bytes4 = new byte[4 * _1M];

        // byte[] bytes3= new byte[4 * _1M];
        // byte[] bytes6= new byte[6 * _1M];
        TimeUnit.SECONDS.sleep(10);
    }

    @Test
    public void test02() {
        byte[] bytes = new byte[2 * _1M];
        byte[] bytes1 = new byte[2 * _1M];
        byte[] bytes2 = new byte[2 * _1M];
        // 发生gc
        byte[] bytes4 = new byte[4 * _1M];

        // byte[] bytes3= new byte[4 * _1M];
        // byte[] bytes6= new byte[6 * _1M];
    }

    /**
     * dump 文件生成 -XX:+HeapDumpOnOutOfMemoryError -Xms20M -Xmx20M -Xmn10M -XX:SurvivorRatio=8
     */
    @Test
    public void test03() {
        byte[] bytes = new byte[2 * _1M];
        byte[] bytes1 = new byte[4 * _1M];
        byte[] bytes2 = new byte[2 * _1M];
        byte[] bytes3 = new byte[4 * _1M];
        // 发生gc
        byte[] bytes4 = new byte[4 * _1M];

        // byte[] bytes3= new byte[4 * _1M];
        // byte[] bytes6= new byte[6 * _1M];
    }
}
